package com.itheima.day09_set.Test03;

import java.util.TreeSet;
//方法1 用Comparable接口来实现
public class Test03 {
    /*
    【编号：1506】在某次考试中，学生的成绩信息如下：
    姓名 年龄 成绩
    Tom 20 90
    Jerry 22 95
    John 20 100
    Lily 22 100
    Lucy 22 90
    Kevin 22 90
    请分别用Comparable和Comparator两个接口对以上同学的成绩做降序排序，
    如果成绩一样，那在成绩排序的基础上按照年龄由小到大排序，成绩和年龄都一样，则按照姓名的字典顺序排序。
     */
    public static void main(String[] args) {
        TreeSet<Student> t = new TreeSet<>();
        t.add(new Student("Tom", 20, 90));
        t.add(new Student("Jerry", 22, 95));
        t.add(new Student("John", 20, 100));
        t.add(new Student("Lily", 22, 100));
        t.add(new Student("Lucy", 22, 90));
        t.add(new Student("Kevin", 22, 90));
        for (Student student : t) {
            System.out.println(student);
        }
    }
}

class Student implements Comparable<Student> {
    private String name;
    private int age;
    private int score;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", score=" + score +
                '}';
    }

    public Student() {
    }

    public Student(String name, int age, int score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public int compareTo(Student o) {
        int result = o.score - this.score;
        result = result == 0 ? 1 : result;
        if (o.score - this.score == 0 && this.age - o.age == 0) {
            result = this.name.compareTo(o.name);
        }
        return result;
    }
}